<?php
function uppic($str) {
	
	/******************************************************************************
图片上传函数：

使用方法
$str是文件域名

参数说明:
$max_file_size  : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark   : 是否附加水印(1为加水印,其他为不加水印);

使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;
	 ******************************************************************************/
	if (empty ( $str )) {
		return false;
	}
	$uptypes = array ('image/jpg', 'image/jpeg', 'image/png', 'image/pjpeg', 'image/gif' );//上传文件类型列表
	$max_file_size = 2000000; //上传文件大小限制, 单位BYTE
	$destination_folder = "b/"; //上传文件路径
	$watermark = 0; //是否附加水印(1为加水印,其他为不加水印);
	$watertype = 0; //水印类型(1为文字,2为图片)
	$waterposition = 1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
	$waterstring = "http://www.chinapp.cn/"; //水印字符串
	$waterimg = "chinapp.gif"; //水印图片
	$imgpreview = 0; //是否生成预览图(1为生成,其他为不生成);
	$imgpreviewsize = 1; //缩略图比例
	//是否存在文件
	if (! is_uploaded_file ( $_FILES [$str] [tmp_name] )) {
		return false;
		//echo "图片不存在!";
		exit ();
	}
	$file = $_FILES [$str];
	if ($max_file_size < $file ["size"]) { //检查文件大小
		return false;
		//echo "文件太大!";
		exit ();
	}
	if (! in_array ( $file ['type'], $uptypes )) { //检查文件类型
		return false;
		//echo "<font color='#FF0000'>不支持的文件类型!</font>";
		exit ();
	}
	if (! file_exists ( $destination_folder )) { //检查创建的上传的目录是否存在，不存在就新建
		mkdir ( $destination_folder );
	}
	$filename = $file ["tmp_name"];
	$image_size = getimagesize ( $filename );
	$pinfo = pathinfo ( $file ["name"] );
	$ftype = $pinfo ['extension'];
	$destination = $destination_folder . time () . "." . $ftype;
	if (file_exists ( $destination ) && $overwrite != true) {
		return false;
		//echo "<font color='#FF0000'>同名文件已经存在了!</font>";
		exit ();
	}
	if (! move_uploaded_file ( $filename, $destination )) {
		return false;
		//echo "<font color='#FF0000'>移动文件出错!</font>";
		exit ();
	}
	$pinfo = pathinfo ( $destination );
	$fname = $pinfo [basename];
	if ($watermark == 1) {
		$iinfo = getimagesize ( $destination, $iinfo );
		$nimage = imagecreatetruecolor ( $image_size [0], $image_size [1] );
		$white = imagecolorallocate ( $nimage, 255, 255, 255 );
		$black = imagecolorallocate ( $nimage, 0, 0, 0 );
		$red = imagecolorallocate ( $nimage, 255, 0, 0 );
		imagefill ( $nimage, 0, 0, $white );
		switch ($iinfo [2]) {
			case 1 :
				$simage = imagecreatefromgif ( $destination );
				break;
			case 2 :
				$simage = imagecreatefromjpeg ( $destination );
				break;
			case 3 :
				$simage = imagecreatefrompng ( $destination );
				break;
			case 6 :
				$simage = imagecreatefromwbmp ( $destination );
				break;
			default :
				return false;
				//die ( "<font color='#FF0000'>不支持的文件类型!</font>" );
				exit ();
		}
		imagecopy ( $nimage, $simage, 0, 0, 0, 0, $image_size [0], $image_size [1] );
		imagefilledrectangle ( $nimage, 1, $image_size [1] - 15, 80, $image_size [1], $white );
		switch ($watertype) {
			case 1 : //加水印字符串
				imagestring ( $nimage, 2, 3, $image_size [1] - 15, $waterstring, $black );
				break;
			case 2 : //加水印图片
				$simage1 = imagecreatefromgif ( "xplore.gif" );
				imagecopy ( $nimage, $simage1, 0, 0, 0, 0, 85, 15 );
				imagedestroy ( $simage1 );
				break;
		}
		switch ($iinfo [2]) {
			case 1 :
				//imagegif($nimage, $destination);
				imagejpeg ( $nimage, $destination );
				break;
			case 2 :
				imagejpeg ( $nimage, $destination );
				break;
			case 3 :
				imagepng ( $nimage, $destination );
				break;
			case 6 :
				imagewbmp ( $nimage, $destination );
				//imagejpeg($nimage, $destination);
				break;
		}
		//覆盖原上传文件
		imagedestroy ( $nimage );
		imagedestroy ( $simage );
	}
	return $fname;
}
?>
